<?php

$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],   // 将 log 组件 ID 加入引导让它始终载入
    'components' => [
        'request' => [    // 用来收集用户请求并解析 路由
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'Mushi',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [    //代表认证登录用户信息， 仅在yii\web\Application 网页应用中可用
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [   //处理 PHP 错误和异常
            'errorAction' => 'site/error',
        ],
        'mailer' => [         //支持生成邮件结构并发送
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),
        'urlManager' => [              //设置路由    
            'enablePrettyUrl' => true,  //路由的路径化
            'showScriptName' => false,  //隐藏入口脚本
            //'suffix' => '.html',  //加入假后缀(fake suffix) .html 
            'rules' => [
                '<controller:\w+>/<action:view>/<pid:\d+>'=>'<controller>/<action>',
            ],
        ],
       /*'modules' => [
            'user' => [
                'class' => 'dektrium\user\models',
            ],
        ],  */

    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '10.64.83.234','::1', '*.*.*.*'],
    ];
    
}

return $config;

/* 
核心应用组件
Yii 定义了一组固定ID和默认配置的 核心 组件，例如 yii\web\Application::request 组件 用来收集用户请求并解析 路由； yii\base\Application::db 代表一个可以执行数据库操作的数据库连接。 通过这些组件，Yii应用主体能处理用户请求。
下面是预定义的核心应用组件列表，可以和普通应用组件一样配置和自定义它们。 当你配置一个核心组件， 不指定它的类名的话就会使用Yii默认指定的类。

yii\web\AssetManager: 管理资源包和资源发布， 详情请参考 管理资源 一节。
yii\db\Connection: 代表一个可以执行数据库操作的数据库连接， 注意配置该组件时必须指定组件类名和其他相关组件属性， 如yii\db\Connection::dsn。 详情请参考 数据访问对象 一节。
yii\base\Application::errorHandler: 处理 PHP 错误和异常， 详情请参考 错误处理 一节。
yii\i18n\Formatter: 格式化输出显示给终端用户的数据， 例如数字可能要带分隔符， 日期使用长格式。详情请参考 格式化输出数据 一节。
yii\i18n\I18N: 支持信息翻译和格式化。 详情请参考 国际化 一节。
yii\log\Dispatcher: 管理日志对象。 详情请参考 日志 一节。
yii\swiftmailer\Mailer: 支持生成邮件结构并发送， 详情请参考 邮件 一节。
yii\base\Application::response: 代表发送给用户的响应， 详情请参考 响应 一节。
yii\base\Application::request: 代表从终端用户处接收到的请求， 详情请参考 请求 一节。
yii\web\Session: 代表会话信息， 仅在yii\web\Application 网页应用中可用， 详情请参考 Sessions (会话) and Cookies 一节。
yii\web\UrlManager: 支持URL地址解析和创建， 详情请参考 URL 解析和生成 一节。
yii\web\User: 代表认证登录用户信息， 仅在yii\web\Application 网页应用中可用， 详情请参考 认证 一节。
yii\web\View: 支持渲染视图， 详情请参考 Views 一节。 
*/
